home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-04-11 | 10.0 KB | 275 lines | [TEXT/ROSA] |
- PowerLisp 1.1
- 4/4/94
- ---------------
- This is the public release of PowerLisp 1.1. It contains a significant
- number of new features, bug fixes, and enhancements over version 1.01.
- I will go over a number of these here, but probably won't cover all
- of them.
-
- I greatly appreciate the support of those of you who have chosen
- to register PowerLisp, and who have communicated with me regarding
- bugs, requested enhancements, etc. Many of the added features are
- in direct response to those communications.
-
- Thanks to Ken Long for his improved color icons, which I have
- included in this released version.
-
- Editor
- The editor, PowerEdit, has been enhanced in a number of ways,
- and a number of bugs have been fixed.
-
- The editor now uses its own heap, which is limited in size to
- 200k. A source file of about 80k is likely to fill it up. When
- the editor limit is reached, text is written to disk in a temporary
- file. As a result, you may edit many, large files without any
- effect on the space you have for your Lisp programs. I find the
- occasional slowdown from disk activity is preferable to the way
- the editor ate up memory in 1.01. Currently a temporary file for
- each open file is created, when the editor needs memory. These
- files should be deleted when the program exits.
-
- The editor has been cleaned up internally, which seems to have
- eliminated some spurious crashes and data loss. I still am not
- 100% confident in it, so keep good backups of your source files.
-
- Line Wrap mode works pretty well now. You can easily turn it on,
- but you can't make it the default yet. For large files it can
- get pretty sluggish. I usually turn it on when I need to view a long
- line, and leave it off the rest of the time.
-
- Lisp mode has been improved. As several of you noted, it seems logical
- that when a Lisp expression is outlined, pressing Enter should
- execute the entire expression, rather than just the current line.
- I have implemented this. To make it obvious, the whole expression
- gets highlighted for a fraction of a second before executing it.
-
- You may now create bold and italic text in the editor. The commands
- are located in the bottom of the Edit menu. Lisp mode no longer
- automatically italicizes comments. Bold and italicized text gets
- saved and re-loaded correctly.
-
- Another problem several people had was getting buried in open
- parentheses. When you are entering expressions, and have not closed
- enough levels of parentheses, the system seems frozen. To make it
- clearer, the editor now shows the number of open parentheses
- in the message bar. I think this helps.
-
- Editor Known Bugs
- Line Wrap mode and Lisp mode are not totally compatible. I avoid
- using them at the same time.
-
- PowerLisp Environment
- A major addition is the Memory window, which can be displayed via
- the Memory command in the new Misc menu. It brings up a window
- which gives you animated displays of the PowerLisp heaps, stacks
- and editor heap usage. It is useful for monitoring memory usage while
- you are running, and noticing how much time is spent in garbage
- collection. When you see the Nodes and Heap bars shrinking you
- know garbage is being recycled.
-
- Common Lisp Implementation
- PowerLisp 1.1 is much closer to CLTL2 compatibility than was
- 1.01. A larg number of functions and macros have been added, and
- several which were incorrectly implemented have been fixed. Several
- more libraries have been added, as many of the new, corrected
- implementations are in Common Lisp and replace built-in C++
- functions.
-
- Complex numbers and arbitrarily large integers are now supported
- in PowerLisp.
-
- The main item which is still lacking, relative to CLTL2, is
- CLOS. Here and there you may still stumble on some missing functions,
- but hopefully this won't come up often.
-
- Scope and Extent
- The important fix here is support for special declarations
- has been added to both the interpreter and compiler. Local variables
- which are declared special should now be handled correctly. In
- 1.01, only variables declared via defvar or defparameter were
- considered special (plus some built-in variables like *package*).
-
- Type Specifiers
- This area has been improved a lot, with most type expressions
- supported in most places. I hope to be able to remove the qualifiers
- so let me know if you notice any problems.
-
- Program Structure
- In 1.01 the defun and defmacro macros did not behave correctly
- in non top-level contexts. This has been corrected.
-
- Predicates
- Most of the missing predicates have been added.
-
- Control Structure
- It was pointed out to me that the do macro in 1.01 was incorrect.
- In particular, it did not update the set of local variables
- 'in parallel' as it was supposed to do. This has been fixed in 1.1.
- Also, implementations of psetq and all of the multiple value handling
- macros are included.
-
- A number of mapping functions which were missing in 1.01 have
- been added.
-
- Compiler
- The compiler now correctly compiles flet special forms, structures,
- and special declarations. labels forms compile, but the generated
- code is the same as for flet.
- labels works correctly when interpreted. Some bugs in the interpreter
- relating to these forms and function closures were identified and
- fixed.
-
- The compiler now behaves in accordance with CLTL2 concerning
- evaluation of compiled forms. Forms are not evaluated in general,
- although eval-when can be used to force evaluation at compile time.
-
- Compiled libraries now use the extension (by default) .fasl which
- is commonly used by other Lisp systems. Of course these files are not
- compatible with other Lisp systems. Compiled libraries are significantly
- smaller than 1.01 libraries. This is accomplished mostly by eliminating
- redundancy in the symbol tables. This makes loading faster.
- Libraries are about 30% smaller, and should still be compatible
- with 1.01 libraries. That is, 1.01 libraries should still load into
- 1.1, but 1.1 libraries will not be usable by 1.01.
-
- I recommend that you recompile any of your own libraries with
- version 1.1. This will allow you to benefit from the smaller
- libraries, faster load time and corrected compiler behavior.
-
- The 'missing function' warning messages which so often were emitted
- by the compiler are now eliminated. My hope is to add a better,
- more useful warning facility to replace this. In the mean time
- it was more of a source of confusion and annoyance than a help.
- At any rate, if a function is missing at run time, you will get
- an error message (the system won't crash).
-
- Declarations
- As mentioned before, special declarations are now handled
- correctly by the compiler and interpreter. Most other declarations
- are currently ignored by both the compiler and interpreter.
-
- The locally special form is not yet supported.
-
- Packages
- Some support was added here for shadowing symbols. The defpackage
- macro was added. The handling of shadowing symbols still may not
- be exactly correct.
-
- Numbers
- Many number functions have been added, including sin, cos, tan, asin,
- acos, atan, sinh, cosh, tanh, exp, expt, log, float, isqrt. Large
- integers and complex numbers are now supported.
-
- A few functions are still missing, but all the missing ones will
- explicitly generate "not implemented" messages rather than the
- normal "no function definition".
-
- Integers between 0 and 500 now are cached i.e. new ones never
- need to be created. (eq 100 100) is true, but (eq 501 501) is nil.
-
- Interpreter
- The interpreter has been sped up by reducing the number of external
- memory accesses during the interpretation process.
-
- Characters
- All characters are kept in a table, so never need to be created
- (as are integers between 0 and 500). This makes some character
- handling more efficient. Some character-related functions were
- added.
-
- Sequences
- A number of missing sequence functions are now implemented.
-
- Strings
- A number of string functions which were missing in 1.01
- are now implemented.
-
- Structures
- The defstruct macro has been rewritten in Common Lisp, and is
- included in the library 'structures.lisp'. The structure
- printing facility should now work correctly. Code which uses
- structures now compiles correctly.
-
- Streams
- The functions with-output-to-string, read-from-string are
- now implemented. The standard stream *terminal-io* has been
- added.
-
- Input/Output
- Much work has been done with the output functions. Many have
- been reimplemented. All the parameters to write are now supported.
- Circular lists can be read and written, print-level can be set,
- etc.
-
- Pretty printing is still not supported.
-
- The format function works better and more options are supported.
- I won't enumerate them here, but if you are really curious you
- could read the source code, which is included in format.lisp in
- the library folder.
-
- Some output functions, in particular print, worked incorrectly
- in 1.01. These have been fixed, but the fix may cause your code
- to output differently. Sorry. :-)
-
- Errors
- The warn function has been implemented.
-
- Backquotes
- Guy Steele's backquote handling code, with optimizations (from CLTL2)
- is now used to handle backquote forms. This correctly handles
- nested backquote forms, and generates optimally efficient forms.
-
- Documentation
- Updated this README file.
- I have included a Common Ground version of the documentation
- which has a built-in viewer. You can use this version to
- browse and print the documentation if you don't have a copy
- of Microsoft Word.
-
- The PowerLisp user guide has been updated to include the 1.1
- modifications.
-
- Non-standard Extensions
- A graphics library has been added. To use it, execute the expression:
-
- (require :graphics)
-
- This will cause the library to be loaded and you may use it to
- create graphic images.
-
- The following functions get loaded into the COMMON-LISP package:
-
- open-canvas
- use-canvas
- moveto
- lineto
- setcolor
- pensize
- fillrect
- fillpoly
- clear-canvas
-
- These functions contain (brief) usage documentation.
-
-
- PowerLisp 1.01
-
- Updates since version 1.0:
-
- Fixed problem which would cause PowerLisp to crash when
- exiting the program in certain cases.
-
- Files selected from the Finder come up on top of the Worksheet
- rather than underneath it.
-
- Fixed (setf third) function definition in cl.lisp (common lisp
- standard library).
-
- Removed MacWrite version of the documentation. I do not
- have MacWrite to test it, and it reportedly has a problem.
-
-
-
-
-